#ifndef DEVICE
#define DEVICE
// 虚假的GPU，用CPU做GPU做的事情。

#include"../mesh/mesh.hpp"

#include<vector>
#include<DirectXMath.h>
#include<windows.h>


using namespace DirectX;
using namespace std;

namespace SoftEngine{

    class VirtualGPU{

        public :
            // 进行批量的旋转
            static void dotRotation(vector<XMFLOAT3>& allDot ,XMFLOAT3 rotation,XMFLOAT3 position);
            static void rotateSingleDot( XMFLOAT3& dot,  XMFLOAT3 rotation,  XMFLOAT3 position);
    };

    // 一个四维或者三维的类
    class MyMatrix{
        private :
            bool isThreeDimensional;
        public :
            XMFLOAT3 line31;
            XMFLOAT3 line32;
            XMFLOAT3 line33;
            XMFLOAT4 line41;
            XMFLOAT4 line42;
            XMFLOAT4 line43;
            XMFLOAT4 line44;

            MyMatrix(XMFLOAT3 line31,XMFLOAT3 line32,XMFLOAT3 line33);
            MyMatrix(XMFLOAT4 line41,XMFLOAT4 line42,XMFLOAT4 line43,XMFLOAT4 line44);

            // 计算矩阵和坐标的乘积
            XMFLOAT3 operator*(XMFLOAT3 dot);
            XMFLOAT4 operator*(XMFLOAT4 dot);
    };

    // 一个彩色的像素点
    class DotColorful{
        public:
        XMFLOAT2 position;
        COLORREF color;
        DotColorful(){};
        DotColorful(XMFLOAT2 position,COLORREF color):position(position),color(color){};
    };

    // 进行深度计算的类
    class Depth{
        public:
        //static vector<vector<DotColorful>> calculateDepth(Model model,int widht,int height);
    };


}


#endif